
Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
fill-range
Advanced tools
Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.
The fill-range npm package is used to generate an array of numbers or strings based on a given range with support for steps, negative ranges, and pattern expansion. It is often used for creating lists of numbers, expanding number and letter sequences, and generating arrays based on patterns.
Number Range Generation
Generates an array of numbers from 1 to 5.
[...fillRange(1, 5)]
Letter Range Generation
Generates an array of letters from 'a' to 'e'.
[...fillRange('a', 'e')]
Pattern Expansion
Expands a pattern '1..3' and applies a transformation function to each value, resulting in ['item1', 'item2', 'item3'].
[...fillRange('1..3', { transform: (val) => `item${val}` })]
Step Support
Generates an array of numbers from 1 to 10 with a step of 2, resulting in [1, 3, 5, 7, 9].
[...fillRange(1, 10, { step: 2 })]
Negative Range Support
Generates an array of numbers from -3 to 3.
[...fillRange(-3, 3)]
This package provides similar functionality to fill-range by generating an array of numbers within a specified range. It allows for custom steps and can handle both ascending and descending ranges. Compared to fill-range, it focuses specifically on number ranges and does not support pattern expansion or letter ranges.
Part of the Lodash utility library, lodash.range generates an array of numbers progressing from start up to, but not including, end. It supports steps and is a lightweight alternative for number range generation. However, it does not offer the pattern expansion or letter range capabilities that fill-range does.
Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
(TOC generated by verb using markdown-toc)
Install with npm:
$ npm install --save fill-range
var range = require('fill-range');
range('a', 'e');
//=> ['a', 'b', 'c', 'd', 'e']
Params
range(start, stop, step, options, fn);
start
: {String|Number} the number or letter to start withend
: {String|Number} the number or letter to end withstep
: {String|Number} optionally pass the step to use. works for letters or numbers.options
: {Object}:
makeRe
: return a regex-compatible string (still returned as an array for consistency)step
: pass the step on the options as an alternative to passing it as an argumentsilent
: true
by default, set to false to throw errors for invalid ranges.fn
: {Function} optionally pass a function to modify each characterExamples
range(1, 3)
//=> ['1', '2', '3']
range('1', '3')
//=> ['1', '2', '3']
range('0', '-5')
//=> [ '0', '-1', '-2', '-3', '-4', '-5' ]
range(-9, 9, 3)
//=> [ '-9', '-6', '-3', '0', '3', '6', '9' ])
range('-1', '-10', '-2')
//=> [ '-1', '-3', '-5', '-7', '-9' ]
range('1', '10', '2')
//=> [ '1', '3', '5', '7', '9' ]
range('a', 'e')
//=> ['a', 'b', 'c', 'd', 'e']
range('a', 'e', 2)
//=> ['a', 'c', 'e']
range('A', 'E', 2)
//=> ['A', 'C', 'E']
When an invalid range is passed, null
is returned.
range('1.1', '2');
//=> null
range('a', '2');
//=> null
range(1, 10, 'foo');
//=> null
If you want errors to be throw, pass silent: false
on the options:
Optionally pass a custom function as the third or fourth argument:
range('a', 'e', function (val, isNumber, pad, i) {
if (!isNumber) {
return String.fromCharCode(val) + i;
}
return val;
});
//=> ['a0', 'b1', 'c2', 'd3', 'e4']
A special character may be passed as the third arg instead of a step increment. These characters can be pretty useful for brace expansion, creating file paths, test fixtures and similar use case.
range('a', 'z', SPECIAL_CHARACTER_HERE);
Supported characters
+
: repeat the given string n
times|
: create a regex-ready string, instead of an array>
: join values to single array element?
: randomize the given pattern using [randomatic]Character: (+
)
Repeat the first argument the number of times passed on the second argument.
Examples:
range('a', 3, '+');
//=> ['a', 'a', 'a']
range('abc', 2, '+');
//=> ['abc', 'abc']
Characters: (|
and ~
)
Creates a regex-capable string (either a logical or
or a character class) from the expanded arguments.
Examples:
range('a', 'c', '|');
//=> ['(a|b|c)'
range('a', 'c', '~');
//=> ['[a-c]'
range('a', 'z', '|5');
//=> ['(a|f|k|p|u|z)'
Automatic separator correction
To avoid this error:
Range out of order in character class
Fill-range detects invalid sequences and uses the correct syntax. For example:
invalid (regex)
If you pass these:
range('a', 'z', '~5');
// which would result in this
//=> ['[a-f-k-p-u-z]']
range('10', '20', '~');
// which would result in this
//=> ['[10-20]']
valid (regex)
fill-range corrects them to this:
range('a', 'z', '~5');
//=> ['(a|f|k|p|u|z)'
range('10', '20', '~');
//=> ['(10-20)'
Character: (>
)
Joins all values in the returned array to a single value.
Examples:
range('a', 'e', '>');
//=> ['abcde']
range('5', '8', '>');
//=> ['5678']
range('2', '20', '2>');
//=> ['2468101214161820']
Character: (?
)
Uses [randomatic] to generate randomized alpha, numeric, or alpha-numeric patterns based on the provided arguments.
Examples:
(actual results would obviously be randomized)
Generate a 5-character, uppercase, alphabetical string:
range('A', 5, '?');
//=> ['NSHAK']
Generate a 5-digit random number:
range('0', 5, '?');
//=> ['36583']
Generate a 10-character alpha-numeric string:
range('A0', 10, '?');
//=> ['5YJD60VQNN']
See the [randomatic] repo for all available options and or to create issues or feature requests related to randomization.
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test
(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)
To generate the readme, run the following command:
$ npm install -g verbose/verb#dev verb-generate-readme && verb
You might also be interested in these projects:
true
if the given string looks like a glob pattern or an extglob pattern… more | homepageCommits | Contributor |
---|---|
111 | jonschlinkert |
2 | paulmillr |
1 | edorivai |
1 | realityking |
1 | wtgtybhertgeghgtwtg |
Jon Schlinkert
Copyright © 2018, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on May 08, 2018.
FAQs
Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`
The npm package fill-range receives a total of 64,267,334 weekly downloads. As such, fill-range popularity was classified as popular.
We found that fill-range demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.